<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-2"></span><span>
</span><span id="line-3"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-4"></span><span class="hs-comment">--</span><span>
</span><span id="line-5"></span><span class="hs-comment">-- Machine-dependent assembly language</span><span>
</span><span id="line-6"></span><span class="hs-comment">--</span><span>
</span><span id="line-7"></span><span class="hs-comment">-- (c) The University of Glasgow 1993-2004</span><span>
</span><span id="line-8"></span><span class="hs-comment">--</span><span>
</span><span id="line-9"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span class="hs-cpp">
#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-12"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.CmmToAsm.SPARC.Instr</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-13"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier">RI</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-14"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#riZero"><span class="hs-identifier">riZero</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-15"></span><span>
</span><span id="line-16"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#fpRelEA"><span class="hs-identifier">fpRelEA</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-17"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#moveSp"><span class="hs-identifier">moveSp</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-18"></span><span>
</span><span id="line-19"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#isUnconditionalJump"><span class="hs-identifier">isUnconditionalJump</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-20"></span><span>
</span><span id="line-21"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier">Instr</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-22"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Stack.html#maxSpillSlots"><span class="hs-identifier">maxSpillSlots</span></a></span><span>
</span><span id="line-23"></span><span class="hs-special">)</span><span>
</span><span id="line-24"></span><span>
</span><span id="line-25"></span><span class="hs-keyword">where</span><span>
</span><span id="line-26"></span><span>
</span><span id="line-27"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-28"></span><span>
</span><span id="line-29"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Stack.html"><span class="hs-identifier">GHC.CmmToAsm.SPARC.Stack</span></a></span><span>
</span><span id="line-30"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Imm.html"><span class="hs-identifier">GHC.CmmToAsm.SPARC.Imm</span></a></span><span>
</span><span id="line-31"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.AddrMode.html"><span class="hs-identifier">GHC.CmmToAsm.SPARC.AddrMode</span></a></span><span>
</span><span id="line-32"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Cond.html"><span class="hs-identifier">GHC.CmmToAsm.SPARC.Cond</span></a></span><span>
</span><span id="line-33"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Regs.html"><span class="hs-identifier">GHC.CmmToAsm.SPARC.Regs</span></a></span><span>
</span><span id="line-34"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Base.html"><span class="hs-identifier">GHC.CmmToAsm.SPARC.Base</span></a></span><span>
</span><span id="line-35"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Reg.Target.html"><span class="hs-identifier">GHC.CmmToAsm.Reg.Target</span></a></span><span>
</span><span id="line-36"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Instr.html"><span class="hs-identifier">GHC.CmmToAsm.Instr</span></a></span><span>
</span><span id="line-37"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.Class.html"><span class="hs-identifier">GHC.Platform.Reg.Class</span></a></span><span>
</span><span id="line-38"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html"><span class="hs-identifier">GHC.Platform.Reg</span></a></span><span>
</span><span id="line-39"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Format.html"><span class="hs-identifier">GHC.CmmToAsm.Format</span></a></span><span>
</span><span id="line-40"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Config.html"><span class="hs-identifier">GHC.CmmToAsm.Config</span></a></span><span>
</span><span id="line-41"></span><span>
</span><span id="line-42"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html"><span class="hs-identifier">GHC.Cmm.CLabel</span></a></span><span>
</span><span id="line-43"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Platform.Regs.html"><span class="hs-identifier">GHC.Platform.Regs</span></a></span><span>
</span><span id="line-44"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html"><span class="hs-identifier">GHC.Cmm.BlockId</span></a></span><span>
</span><span id="line-45"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.html"><span class="hs-identifier">GHC.Cmm</span></a></span><span>
</span><span id="line-46"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html"><span class="hs-identifier">GHC.Data.FastString</span></a></span><span>
</span><span id="line-47"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-48"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#"><span class="hs-identifier">GHC.Platform</span></a></span><span>
</span><span id="line-49"></span><span>
</span><span id="line-50"></span><span>
</span><span id="line-51"></span><span class="hs-comment">-- | Register or immediate</span><span>
</span><span id="line-52"></span><span class="hs-keyword">data</span><span> </span><span id="RI"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-var">RI</span></a></span></span><span>
</span><span id="line-53"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span id="RIReg"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RIReg"><span class="hs-identifier hs-var">RIReg</span></a></span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-54"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="RIImm"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RIImm"><span class="hs-identifier hs-var">RIImm</span></a></span></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Imm.html#Imm"><span class="hs-identifier hs-type">Imm</span></a></span><span>
</span><span id="line-55"></span><span>
</span><span id="line-56"></span><span class="hs-comment">-- | Check if a RI represents a zero value.</span><span>
</span><span id="line-57"></span><span class="hs-comment">--      - a literal zero</span><span>
</span><span id="line-58"></span><span class="hs-comment">--      - register %g0, which is always zero.</span><span>
</span><span id="line-59"></span><span class="hs-comment">--</span><span>
</span><span id="line-60"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#riZero"><span class="hs-identifier hs-type">riZero</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-61"></span><span id="riZero"><span class="annot"><span class="annottext">riZero :: RI -&gt; Bool
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#riZero"><span class="hs-identifier hs-var hs-var">riZero</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RIImm"><span class="hs-identifier hs-type">RIImm</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Imm.html#ImmInt"><span class="hs-identifier hs-type">ImmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>                       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-62"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#riZero"><span class="hs-identifier hs-var">riZero</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RIImm"><span class="hs-identifier hs-type">RIImm</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Imm.html#ImmInteger"><span class="hs-identifier hs-type">ImmInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-63"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#riZero"><span class="hs-identifier hs-var">riZero</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RIReg"><span class="hs-identifier hs-type">RIReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#RegReal"><span class="hs-identifier hs-type">RegReal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#RealRegSingle"><span class="hs-identifier hs-type">RealRegSingle</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-64"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#riZero"><span class="hs-identifier hs-var">riZero</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><span class="hs-identifier">_</span></span><span>                                        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-65"></span><span>
</span><span id="line-66"></span><span>
</span><span id="line-67"></span><span class="hs-comment">-- | Calculate the effective address which would be used by the</span><span>
</span><span id="line-68"></span><span class="hs-comment">--      corresponding fpRel sequence.</span><span>
</span><span id="line-69"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#fpRelEA"><span class="hs-identifier hs-type">fpRelEA</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-70"></span><span id="fpRelEA"><span class="annot"><span class="annottext">fpRelEA :: Int -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#fpRelEA"><span class="hs-identifier hs-var hs-var">fpRelEA</span></a></span></span><span> </span><span id="local-6989586621681009211"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681009211"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621681009210"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009210"><span class="hs-identifier hs-var">dst</span></a></span></span><span>
</span><span id="line-71"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#ADD"><span class="hs-identifier hs-var">ADD</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.SPARC.Regs.html#fp"><span class="hs-identifier hs-var">fp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Imm -&gt; RI
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#RIImm"><span class="hs-identifier hs-var">RIImm</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Imm
</span><a href="GHC.CmmToAsm.SPARC.Imm.html#ImmInt"><span class="hs-identifier hs-var">ImmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681009211"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.CmmToAsm.SPARC.Base.html#wordLength"><span class="hs-identifier hs-var">wordLength</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009210"><span class="hs-identifier hs-var">dst</span></a></span><span>
</span><span id="line-72"></span><span>
</span><span id="line-73"></span><span>
</span><span id="line-74"></span><span class="hs-comment">-- | Code to shift the stack pointer by n words.</span><span>
</span><span id="line-75"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#moveSp"><span class="hs-identifier hs-type">moveSp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-76"></span><span id="moveSp"><span class="annot"><span class="annottext">moveSp :: Int -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#moveSp"><span class="hs-identifier hs-var hs-var">moveSp</span></a></span></span><span> </span><span id="local-6989586621681009205"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681009205"><span class="hs-identifier hs-var">n</span></a></span></span><span>
</span><span id="line-77"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#ADD"><span class="hs-identifier hs-var">ADD</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.SPARC.Regs.html#sp"><span class="hs-identifier hs-var">sp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Imm -&gt; RI
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#RIImm"><span class="hs-identifier hs-var">RIImm</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Imm
</span><a href="GHC.CmmToAsm.SPARC.Imm.html#ImmInt"><span class="hs-identifier hs-var">ImmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681009205"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="GHC.CmmToAsm.SPARC.Base.html#wordLength"><span class="hs-identifier hs-var">wordLength</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.SPARC.Regs.html#sp"><span class="hs-identifier hs-var">sp</span></a></span><span>
</span><span id="line-78"></span><span>
</span><span id="line-79"></span><span class="hs-comment">-- | An instruction that will cause the one after it never to be exectuted</span><span>
</span><span id="line-80"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#isUnconditionalJump"><span class="hs-identifier hs-type">isUnconditionalJump</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-81"></span><span id="isUnconditionalJump"><span class="annot"><span class="annottext">isUnconditionalJump :: Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#isUnconditionalJump"><span class="hs-identifier hs-var hs-var">isUnconditionalJump</span></a></span></span><span> </span><span id="local-6989586621681009203"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681009203"><span class="hs-identifier hs-var">ii</span></a></span></span><span>
</span><span id="line-82"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681009203"><span class="hs-identifier hs-var">ii</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-83"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-type">CALL</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-84"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP"><span class="hs-identifier hs-type">JMP</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-85"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP_TBL"><span class="hs-identifier hs-type">JMP_TBL</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-86"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#BI"><span class="hs-identifier hs-type">BI</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="GHC.CmmToAsm.SPARC.Cond.html#ALWAYS"><span class="hs-identifier hs-var">ALWAYS</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-87"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#BF"><span class="hs-identifier hs-type">BF</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="GHC.CmmToAsm.SPARC.Cond.html#ALWAYS"><span class="hs-identifier hs-var">ALWAYS</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-88"></span><span>        </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-89"></span><span>
</span><span id="line-90"></span><span>
</span><span id="line-91"></span><span class="hs-comment">-- | instance for sparc instruction set</span><span>
</span><span id="line-92"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Instr.html#Instruction"><span class="hs-identifier hs-type">Instruction</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-93"></span><span>        </span><span id="local-6989586621681009180"><span class="annot"><span class="annottext">regUsageOfInstr :: Platform -&gt; Instr -&gt; RegUsage
</span><a href="GHC.CmmToAsm.Instr.html#regUsageOfInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">regUsageOfInstr</span></a></span></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Instr -&gt; RegUsage
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_regUsageOfInstr"><span class="hs-identifier hs-var">sparc_regUsageOfInstr</span></a></span><span>
</span><span id="line-94"></span><span>        </span><span id="local-6989586621681009177"><span class="annot"><span class="annottext">patchRegsOfInstr :: Instr -&gt; (Reg -&gt; Reg) -&gt; Instr
</span><a href="GHC.CmmToAsm.Instr.html#patchRegsOfInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">patchRegsOfInstr</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; (Reg -&gt; Reg) -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_patchRegsOfInstr"><span class="hs-identifier hs-var">sparc_patchRegsOfInstr</span></a></span><span>
</span><span id="line-95"></span><span>        </span><span id="local-6989586621681009174"><span class="annot"><span class="annottext">isJumpishInstr :: Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.Instr.html#isJumpishInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">isJumpishInstr</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_isJumpishInstr"><span class="hs-identifier hs-var">sparc_isJumpishInstr</span></a></span><span>
</span><span id="line-96"></span><span>        </span><span id="local-6989586621681009171"><span class="annot"><span class="annottext">jumpDestsOfInstr :: Instr -&gt; [BlockId]
</span><a href="GHC.CmmToAsm.Instr.html#jumpDestsOfInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">jumpDestsOfInstr</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; [BlockId]
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_jumpDestsOfInstr"><span class="hs-identifier hs-var">sparc_jumpDestsOfInstr</span></a></span><span>
</span><span id="line-97"></span><span>        </span><span id="local-6989586621681009168"><span class="annot"><span class="annottext">patchJumpInstr :: Instr -&gt; (BlockId -&gt; BlockId) -&gt; Instr
</span><a href="GHC.CmmToAsm.Instr.html#patchJumpInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">patchJumpInstr</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; (BlockId -&gt; BlockId) -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_patchJumpInstr"><span class="hs-identifier hs-var">sparc_patchJumpInstr</span></a></span><span>
</span><span id="line-98"></span><span>        </span><span id="local-6989586621681009165"><span class="annot"><span class="annottext">mkSpillInstr :: NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.Instr.html#mkSpillInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkSpillInstr</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkSpillInstr"><span class="hs-identifier hs-var">sparc_mkSpillInstr</span></a></span><span>
</span><span id="line-99"></span><span>        </span><span id="local-6989586621681009162"><span class="annot"><span class="annottext">mkLoadInstr :: NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.Instr.html#mkLoadInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkLoadInstr</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkLoadInstr"><span class="hs-identifier hs-var">sparc_mkLoadInstr</span></a></span><span>
</span><span id="line-100"></span><span>        </span><span id="local-6989586621681009159"><span class="annot"><span class="annottext">takeDeltaInstr :: Instr -&gt; Maybe Int
</span><a href="GHC.CmmToAsm.Instr.html#takeDeltaInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">takeDeltaInstr</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; Maybe Int
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_takeDeltaInstr"><span class="hs-identifier hs-var">sparc_takeDeltaInstr</span></a></span><span>
</span><span id="line-101"></span><span>        </span><span id="local-6989586621681009156"><span class="annot"><span class="annottext">isMetaInstr :: Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.Instr.html#isMetaInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">isMetaInstr</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_isMetaInstr"><span class="hs-identifier hs-var">sparc_isMetaInstr</span></a></span><span>
</span><span id="line-102"></span><span>        </span><span id="local-6989586621681009153"><span class="annot"><span class="annottext">mkRegRegMoveInstr :: Platform -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.Instr.html#mkRegRegMoveInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkRegRegMoveInstr</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkRegRegMoveInstr"><span class="hs-identifier hs-var">sparc_mkRegRegMoveInstr</span></a></span><span>
</span><span id="line-103"></span><span>        </span><span id="local-6989586621681009150"><span class="annot"><span class="annottext">takeRegRegMoveInstr :: Instr -&gt; Maybe (Reg, Reg)
</span><a href="GHC.CmmToAsm.Instr.html#takeRegRegMoveInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">takeRegRegMoveInstr</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Instr -&gt; Maybe (Reg, Reg)
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_takeRegRegMoveInstr"><span class="hs-identifier hs-var">sparc_takeRegRegMoveInstr</span></a></span><span>
</span><span id="line-104"></span><span>        </span><span id="local-6989586621681009147"><span class="annot"><span class="annottext">mkJumpInstr :: BlockId -&gt; [Instr]
</span><a href="GHC.CmmToAsm.Instr.html#mkJumpInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkJumpInstr</span></a></span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; [Instr]
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkJumpInstr"><span class="hs-identifier hs-var">sparc_mkJumpInstr</span></a></span><span>
</span><span id="line-105"></span><span>        </span><span id="local-6989586621681009144"><span class="annot"><span class="annottext">mkStackAllocInstr :: Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.Instr.html#mkStackAllocInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkStackAllocInstr</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Platform -&gt; Int -&gt; [Instr]
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;no sparc_mkStackAllocInstr&quot;</span></span><span>
</span><span id="line-106"></span><span>        </span><span id="local-6989586621681009141"><span class="annot"><span class="annottext">mkStackDeallocInstr :: Platform -&gt; Int -&gt; [Instr]
</span><a href="GHC.CmmToAsm.Instr.html#mkStackDeallocInstr"><span class="hs-identifier hs-var hs-var hs-var hs-var">mkStackDeallocInstr</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Platform -&gt; Int -&gt; [Instr]
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;no sparc_mkStackDeallocInstr&quot;</span></span><span>
</span><span id="line-107"></span><span>
</span><span id="line-108"></span><span>
</span><span id="line-109"></span><span class="hs-comment">-- | SPARC instruction set.</span><span>
</span><span id="line-110"></span><span class="hs-comment">--      Not complete. This is only the ones we need.</span><span>
</span><span id="line-111"></span><span class="hs-comment">--</span><span>
</span><span id="line-112"></span><span class="hs-keyword">data</span><span> </span><span id="Instr"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-var">Instr</span></a></span></span><span>
</span><span id="line-113"></span><span>
</span><span id="line-114"></span><span>        </span><span class="hs-comment">-- meta ops --------------------------------------------------</span><span>
</span><span id="line-115"></span><span>        </span><span class="hs-comment">-- comment pseudo-op</span><span>
</span><span id="line-116"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span id="COMMENT"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#COMMENT"><span class="hs-identifier hs-var">COMMENT</span></a></span></span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span>
</span><span id="line-117"></span><span>
</span><span id="line-118"></span><span>        </span><span class="hs-comment">-- some static data spat out during code generation.</span><span>
</span><span id="line-119"></span><span>        </span><span class="hs-comment">-- Will be extracted before pretty-printing.</span><span>
</span><span id="line-120"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="LDATA"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#LDATA"><span class="hs-identifier hs-var">LDATA</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Cmm.html#Section"><span class="hs-identifier hs-type">Section</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.html#RawCmmStatics"><span class="hs-identifier hs-type">RawCmmStatics</span></a></span><span>
</span><span id="line-121"></span><span>
</span><span id="line-122"></span><span>        </span><span class="hs-comment">-- Start a new basic block.  Useful during codegen, removed later.</span><span>
</span><span id="line-123"></span><span>        </span><span class="hs-comment">-- Preceding instruction should be a jump, as per the invariants</span><span>
</span><span id="line-124"></span><span>        </span><span class="hs-comment">-- for a BasicBlock (see Cmm).</span><span>
</span><span id="line-125"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="NEWBLOCK"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#NEWBLOCK"><span class="hs-identifier hs-var">NEWBLOCK</span></a></span></span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span>
</span><span id="line-126"></span><span>
</span><span id="line-127"></span><span>        </span><span class="hs-comment">-- specify current stack offset for benefit of subsequent passes.</span><span>
</span><span id="line-128"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="DELTA"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#DELTA"><span class="hs-identifier hs-var">DELTA</span></a></span></span><span>   </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-129"></span><span>
</span><span id="line-130"></span><span>        </span><span class="hs-comment">-- real instrs -----------------------------------------------</span><span>
</span><span id="line-131"></span><span>        </span><span class="hs-comment">-- Loads and stores.</span><span>
</span><span id="line-132"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="LD"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#LD"><span class="hs-identifier hs-var">LD</span></a></span></span><span>            </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.AddrMode.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>             </span><span class="hs-comment">-- format, src, dst</span><span>
</span><span id="line-133"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="ST"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ST"><span class="hs-identifier hs-var">ST</span></a></span></span><span>            </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.AddrMode.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span>             </span><span class="hs-comment">-- format, src, dst</span><span>
</span><span id="line-134"></span><span>
</span><span id="line-135"></span><span>        </span><span class="hs-comment">-- Int Arithmetic.</span><span>
</span><span id="line-136"></span><span>        </span><span class="hs-comment">--      x:   add/sub with carry bit.</span><span>
</span><span id="line-137"></span><span>        </span><span class="hs-comment">--              In SPARC V9 addx and friends were renamed addc.</span><span>
</span><span id="line-138"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-139"></span><span>        </span><span class="hs-comment">--      cc:  modify condition codes</span><span>
</span><span id="line-140"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-141"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="ADD"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ADD"><span class="hs-identifier hs-var">ADD</span></a></span></span><span>           </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>            </span><span class="hs-comment">-- x?, cc?, src1, src2, dst</span><span>
</span><span id="line-142"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="SUB"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SUB"><span class="hs-identifier hs-var">SUB</span></a></span></span><span>           </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>            </span><span class="hs-comment">-- x?, cc?, src1, src2, dst</span><span>
</span><span id="line-143"></span><span>
</span><span id="line-144"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="UMUL"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#UMUL"><span class="hs-identifier hs-var">UMUL</span></a></span></span><span>          </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                 </span><span class="hs-comment">--     cc?, src1, src2, dst</span><span>
</span><span id="line-145"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="SMUL"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SMUL"><span class="hs-identifier hs-var">SMUL</span></a></span></span><span>          </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                 </span><span class="hs-comment">--     cc?, src1, src2, dst</span><span>
</span><span id="line-146"></span><span>
</span><span id="line-147"></span><span>
</span><span id="line-148"></span><span>        </span><span class="hs-comment">-- The SPARC divide instructions perform 64bit by 32bit division</span><span>
</span><span id="line-149"></span><span>        </span><span class="hs-comment">--   The Y register is xored into the first operand.</span><span>
</span><span id="line-150"></span><span>
</span><span id="line-151"></span><span>        </span><span class="hs-comment">--   On _some implementations_ the Y register is overwritten by</span><span>
</span><span id="line-152"></span><span>        </span><span class="hs-comment">--   the remainder, so we have to make sure it is 0 each time.</span><span>
</span><span id="line-153"></span><span>
</span><span id="line-154"></span><span>        </span><span class="hs-comment">--   dst &lt;- ((Y `shiftL` 32) `or` src1) `div` src2</span><span>
</span><span id="line-155"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="UDIV"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#UDIV"><span class="hs-identifier hs-var">UDIV</span></a></span></span><span>          </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                 </span><span class="hs-comment">--     cc?, src1, src2, dst</span><span>
</span><span id="line-156"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="SDIV"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SDIV"><span class="hs-identifier hs-var">SDIV</span></a></span></span><span>          </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                 </span><span class="hs-comment">--     cc?, src1, src2, dst</span><span>
</span><span id="line-157"></span><span>
</span><span id="line-158"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="RDY"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RDY"><span class="hs-identifier hs-var">RDY</span></a></span></span><span>           </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                             </span><span class="hs-comment">-- move contents of Y register to reg</span><span>
</span><span id="line-159"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="WRY"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#WRY"><span class="hs-identifier hs-var">WRY</span></a></span></span><span>           </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>  </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                        </span><span class="hs-comment">-- Y &lt;- src1 `xor` src2</span><span>
</span><span id="line-160"></span><span>
</span><span id="line-161"></span><span>        </span><span class="hs-comment">-- Logic operations.</span><span>
</span><span id="line-162"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="AND"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#AND"><span class="hs-identifier hs-var">AND</span></a></span></span><span>           </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                 </span><span class="hs-comment">-- cc?, src1, src2, dst</span><span>
</span><span id="line-163"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="ANDN"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ANDN"><span class="hs-identifier hs-var">ANDN</span></a></span></span><span>          </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                 </span><span class="hs-comment">-- cc?, src1, src2, dst</span><span>
</span><span id="line-164"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="OR"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#OR"><span class="hs-identifier hs-var">OR</span></a></span></span><span>            </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                 </span><span class="hs-comment">-- cc?, src1, src2, dst</span><span>
</span><span id="line-165"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="ORN"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ORN"><span class="hs-identifier hs-var">ORN</span></a></span></span><span>           </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                 </span><span class="hs-comment">-- cc?, src1, src2, dst</span><span>
</span><span id="line-166"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="XOR"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#XOR"><span class="hs-identifier hs-var">XOR</span></a></span></span><span>           </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                 </span><span class="hs-comment">-- cc?, src1, src2, dst</span><span>
</span><span id="line-167"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="XNOR"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#XNOR"><span class="hs-identifier hs-var">XNOR</span></a></span></span><span>          </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                 </span><span class="hs-comment">-- cc?, src1, src2, dst</span><span>
</span><span id="line-168"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="SLL"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SLL"><span class="hs-identifier hs-var">SLL</span></a></span></span><span>           </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                      </span><span class="hs-comment">-- src1, src2, dst</span><span>
</span><span id="line-169"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="SRL"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SRL"><span class="hs-identifier hs-var">SRL</span></a></span></span><span>           </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                      </span><span class="hs-comment">-- src1, src2, dst</span><span>
</span><span id="line-170"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="SRA"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SRA"><span class="hs-identifier hs-var">SRA</span></a></span></span><span>           </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RI"><span class="hs-identifier hs-type">RI</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                      </span><span class="hs-comment">-- src1, src2, dst</span><span>
</span><span id="line-171"></span><span>
</span><span id="line-172"></span><span>        </span><span class="hs-comment">-- Load immediates.</span><span>
</span><span id="line-173"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="SETHI"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SETHI"><span class="hs-identifier hs-var">SETHI</span></a></span></span><span>         </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Imm.html#Imm"><span class="hs-identifier hs-type">Imm</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                         </span><span class="hs-comment">-- src, dst</span><span>
</span><span id="line-174"></span><span>
</span><span id="line-175"></span><span>        </span><span class="hs-comment">-- Do nothing.</span><span>
</span><span id="line-176"></span><span>        </span><span class="hs-comment">-- Implemented by the assembler as SETHI 0, %g0, but worth an alias</span><span>
</span><span id="line-177"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="NOP"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#NOP"><span class="hs-identifier hs-var">NOP</span></a></span></span><span>
</span><span id="line-178"></span><span>
</span><span id="line-179"></span><span>        </span><span class="hs-comment">-- Float Arithmetic.</span><span>
</span><span id="line-180"></span><span>        </span><span class="hs-comment">-- Note that we cheat by treating F{ABS,MOV,NEG} of doubles as single</span><span>
</span><span id="line-181"></span><span>        </span><span class="hs-comment">-- instructions right up until we spit them out.</span><span>
</span><span id="line-182"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-183"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="FABS"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FABS"><span class="hs-identifier hs-var">FABS</span></a></span></span><span>          </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                  </span><span class="hs-comment">-- src dst</span><span>
</span><span id="line-184"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="FADD"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FADD"><span class="hs-identifier hs-var">FADD</span></a></span></span><span>          </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>              </span><span class="hs-comment">-- src1, src2, dst</span><span>
</span><span id="line-185"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="FCMP"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FCMP"><span class="hs-identifier hs-var">FCMP</span></a></span></span><span>          </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>             </span><span class="hs-comment">-- exception?, src1, src2, dst</span><span>
</span><span id="line-186"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="FDIV"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FDIV"><span class="hs-identifier hs-var">FDIV</span></a></span></span><span>          </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>              </span><span class="hs-comment">-- src1, src2, dst</span><span>
</span><span id="line-187"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="FMOV"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FMOV"><span class="hs-identifier hs-var">FMOV</span></a></span></span><span>          </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                  </span><span class="hs-comment">-- src, dst</span><span>
</span><span id="line-188"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="FMUL"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FMUL"><span class="hs-identifier hs-var">FMUL</span></a></span></span><span>          </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>              </span><span class="hs-comment">-- src1, src2, dst</span><span>
</span><span id="line-189"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="FNEG"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FNEG"><span class="hs-identifier hs-var">FNEG</span></a></span></span><span>          </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                  </span><span class="hs-comment">-- src, dst</span><span>
</span><span id="line-190"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="FSQRT"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FSQRT"><span class="hs-identifier hs-var">FSQRT</span></a></span></span><span>         </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>                  </span><span class="hs-comment">-- src, dst</span><span>
</span><span id="line-191"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="FSUB"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FSUB"><span class="hs-identifier hs-var">FSUB</span></a></span></span><span>          </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>              </span><span class="hs-comment">-- src1, src2, dst</span><span>
</span><span id="line-192"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="FxTOy"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FxTOy"><span class="hs-identifier hs-var">FxTOy</span></a></span></span><span>         </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Format.html#Format"><span class="hs-identifier hs-type">Format</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>           </span><span class="hs-comment">-- src, dst</span><span>
</span><span id="line-193"></span><span>
</span><span id="line-194"></span><span>        </span><span class="hs-comment">-- Jumping around.</span><span>
</span><span id="line-195"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="BI"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#BI"><span class="hs-identifier hs-var">BI</span></a></span></span><span>            </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Cond.html#Cond"><span class="hs-identifier hs-type">Cond</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span>               </span><span class="hs-comment">-- cond, annul?, target</span><span>
</span><span id="line-196"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="BF"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#BF"><span class="hs-identifier hs-var">BF</span></a></span></span><span>            </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Cond.html#Cond"><span class="hs-identifier hs-type">Cond</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span>               </span><span class="hs-comment">-- cond, annul?, target</span><span>
</span><span id="line-197"></span><span>
</span><span id="line-198"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="JMP"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP"><span class="hs-identifier hs-var">JMP</span></a></span></span><span>           </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.AddrMode.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span>                        </span><span class="hs-comment">-- target</span><span>
</span><span id="line-199"></span><span>
</span><span id="line-200"></span><span>        </span><span class="hs-comment">-- With a tabled jump we know all the possible destinations.</span><span>
</span><span id="line-201"></span><span>        </span><span class="hs-comment">-- We also need this info so we can work out what regs are live across the jump.</span><span>
</span><span id="line-202"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-203"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="JMP_TBL"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP_TBL"><span class="hs-identifier hs-var">JMP_TBL</span></a></span></span><span>       </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.AddrMode.html#AddrMode"><span class="hs-identifier hs-type">AddrMode</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span>
</span><span id="line-204"></span><span>
</span><span id="line-205"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="CALL"><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-var">CALL</span></a></span></span><span>          </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Either"><span class="hs-identifier hs-type">Either</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Imm.html#Imm"><span class="hs-identifier hs-type">Imm</span></a></span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>       </span><span class="hs-comment">-- target, args, terminal</span><span>
</span><span id="line-206"></span><span>
</span><span id="line-207"></span><span>
</span><span id="line-208"></span><span class="hs-comment">-- | regUsage returns the sets of src and destination registers used</span><span>
</span><span id="line-209"></span><span class="hs-comment">--      by a particular instruction.  Machine registers that are</span><span>
</span><span id="line-210"></span><span class="hs-comment">--      pre-allocated to stgRegs are filtered out, because they are</span><span>
</span><span id="line-211"></span><span class="hs-comment">--      uninteresting from a register allocation standpoint.  (We wouldn't</span><span>
</span><span id="line-212"></span><span class="hs-comment">--      want them to end up on the free list!)  As far as we are concerned,</span><span>
</span><span id="line-213"></span><span class="hs-comment">--      the fixed registers simply don't exist (for allocation purposes,</span><span>
</span><span id="line-214"></span><span class="hs-comment">--      anyway).</span><span>
</span><span id="line-215"></span><span>
</span><span id="line-216"></span><span class="hs-comment">--      regUsage doesn't need to do any trickery for jumps and such.  Just</span><span>
</span><span id="line-217"></span><span class="hs-comment">--      state precisely the regs read and written by that insn.  The</span><span>
</span><span id="line-218"></span><span class="hs-comment">--      consequences of control flow transfers, as far as register</span><span>
</span><span id="line-219"></span><span class="hs-comment">--      allocation goes, are taken care of by the register allocator.</span><span>
</span><span id="line-220"></span><span class="hs-comment">--</span><span>
</span><span id="line-221"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_regUsageOfInstr"><span class="hs-identifier hs-type">sparc_regUsageOfInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Instr.html#RegUsage"><span class="hs-identifier hs-type">RegUsage</span></a></span><span>
</span><span id="line-222"></span><span id="sparc_regUsageOfInstr"><span class="annot"><span class="annottext">sparc_regUsageOfInstr :: Platform -&gt; Instr -&gt; RegUsage
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_regUsageOfInstr"><span class="hs-identifier hs-var hs-var">sparc_regUsageOfInstr</span></a></span></span><span> </span><span id="local-6989586621681009102"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681009102"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681009101"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681009101"><span class="hs-identifier hs-var">instr</span></a></span></span><span>
</span><span id="line-223"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681009101"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-224"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#LD"><span class="hs-identifier hs-type">LD</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009100"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681009100"><span class="hs-identifier hs-var">addr</span></a></span></span><span> </span><span id="local-6989586621681009099"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009099"><span class="hs-identifier hs-var">reg</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681009097"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681009100"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span>         </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009099"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-225"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ST"><span class="hs-identifier hs-type">ST</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009096"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009096"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681009095"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681009095"><span class="hs-identifier hs-var">addr</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009096"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681009097"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681009095"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span>   </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-226"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ADD"><span class="hs-identifier hs-type">ADD</span></a></span><span>   </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009094"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009094"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009093"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009093"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009092"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009092"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009094"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009093"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009092"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-227"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SUB"><span class="hs-identifier hs-type">SUB</span></a></span><span>   </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009090"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009090"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009089"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009089"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009088"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009088"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009090"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009089"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009088"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-228"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#UMUL"><span class="hs-identifier hs-type">UMUL</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009087"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009087"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009086"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009086"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009085"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009085"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009087"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009086"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009085"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-229"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SMUL"><span class="hs-identifier hs-type">SMUL</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009084"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009084"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009083"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009083"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009082"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009082"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009084"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009083"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009082"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-230"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#UDIV"><span class="hs-identifier hs-type">UDIV</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009081"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009081"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009080"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009080"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009079"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009079"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009081"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009080"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009079"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-231"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SDIV"><span class="hs-identifier hs-type">SDIV</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009078"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009078"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009077"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009077"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009076"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009076"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009078"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009077"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009076"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-232"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RDY"><span class="hs-identifier hs-type">RDY</span></a></span><span>       </span><span id="local-6989586621681009075"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009075"><span class="hs-identifier hs-var">rd</span></a></span></span><span>                </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span>                   </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009075"><span class="hs-identifier hs-var">rd</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-233"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#WRY"><span class="hs-identifier hs-type">WRY</span></a></span><span>       </span><span id="local-6989586621681009074"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009074"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009073"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009073"><span class="hs-identifier hs-var">r2</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009074"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009073"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>             </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-234"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#AND"><span class="hs-identifier hs-type">AND</span></a></span><span>     </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009072"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009072"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009071"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009071"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009070"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009070"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009072"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009071"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009070"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-235"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ANDN"><span class="hs-identifier hs-type">ANDN</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009069"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009069"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009068"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009068"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009067"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009067"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009069"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009068"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009067"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-236"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#OR"><span class="hs-identifier hs-type">OR</span></a></span><span>      </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009066"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009066"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009065"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009065"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009064"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009064"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009066"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009065"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009064"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-237"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ORN"><span class="hs-identifier hs-type">ORN</span></a></span><span>     </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009063"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009063"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009062"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009062"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009061"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009061"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009063"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009062"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009061"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-238"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#XOR"><span class="hs-identifier hs-type">XOR</span></a></span><span>     </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009060"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009060"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009059"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009059"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009058"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009058"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009060"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009059"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009058"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-239"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#XNOR"><span class="hs-identifier hs-type">XNOR</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009057"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009057"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009056"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009056"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009055"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009055"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009057"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009056"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009055"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-240"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SLL"><span class="hs-identifier hs-type">SLL</span></a></span><span>       </span><span id="local-6989586621681009054"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009054"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009053"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009053"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009052"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009052"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009054"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009053"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009052"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-241"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SRL"><span class="hs-identifier hs-type">SRL</span></a></span><span>       </span><span id="local-6989586621681009051"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009051"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009050"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009050"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009049"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009049"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009051"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009050"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009049"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-242"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SRA"><span class="hs-identifier hs-type">SRA</span></a></span><span>       </span><span id="local-6989586621681009048"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009048"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009047"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009047"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681009046"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009046"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009048"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681009047"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">,</span><span>        </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009046"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-243"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SETHI"><span class="hs-identifier hs-type">SETHI</span></a></span><span>   </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009045"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009045"><span class="hs-identifier hs-var">reg</span></a></span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span>                   </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009045"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-244"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FABS"><span class="hs-identifier hs-type">FABS</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009044"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009044"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009043"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009043"><span class="hs-identifier hs-var">r2</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009044"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>                 </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009043"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-245"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FADD"><span class="hs-identifier hs-type">FADD</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009042"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009042"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009041"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009041"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681009040"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009040"><span class="hs-identifier hs-var">r3</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009042"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009041"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>             </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009040"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-246"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FCMP"><span class="hs-identifier hs-type">FCMP</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span>  </span><span id="local-6989586621681009039"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009039"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009038"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009038"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009039"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009038"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>             </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-247"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FDIV"><span class="hs-identifier hs-type">FDIV</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009037"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009037"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009036"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009036"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681009035"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009035"><span class="hs-identifier hs-var">r3</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009037"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009036"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>             </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009035"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-248"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FMOV"><span class="hs-identifier hs-type">FMOV</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009034"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009034"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009033"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009033"><span class="hs-identifier hs-var">r2</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009034"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>                 </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009033"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-249"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FMUL"><span class="hs-identifier hs-type">FMUL</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009032"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009032"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009031"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009031"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681009030"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009030"><span class="hs-identifier hs-var">r3</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009032"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009031"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>             </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009030"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-250"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FNEG"><span class="hs-identifier hs-type">FNEG</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009029"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009029"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009028"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009028"><span class="hs-identifier hs-var">r2</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009029"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>                 </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009028"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-251"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FSQRT"><span class="hs-identifier hs-type">FSQRT</span></a></span><span>   </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009027"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009027"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009026"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009026"><span class="hs-identifier hs-var">r2</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009027"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>                 </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009026"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-252"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FSUB"><span class="hs-identifier hs-type">FSUB</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681009025"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009025"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009024"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009024"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681009023"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009023"><span class="hs-identifier hs-var">r3</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009025"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009024"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>             </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009023"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-253"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FxTOy"><span class="hs-identifier hs-type">FxTOy</span></a></span><span>   </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Format
</span><span class="hs-identifier">_</span></span><span>  </span><span id="local-6989586621681009022"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009022"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009021"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009021"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009022"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>                 </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009021"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-254"></span><span>
</span><span id="line-255"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP"><span class="hs-identifier hs-type">JMP</span></a></span><span>     </span><span id="local-6989586621681009020"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681009020"><span class="hs-identifier hs-var">addr</span></a></span></span><span>                </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681009097"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681009020"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-256"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP_TBL"><span class="hs-identifier hs-type">JMP_TBL</span></a></span><span> </span><span id="local-6989586621681009019"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681009019"><span class="hs-identifier hs-var">addr</span></a></span></span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId]
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681009097"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681009019"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-257"></span><span>
</span><span id="line-258"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-type">CALL</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Left"><span class="hs-identifier hs-type">Left</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-special">)</span><span>  </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">RegUsage
</span><a href="GHC.CmmToAsm.Instr.html#noUsage"><span class="hs-identifier hs-var">noUsage</span></a></span><span>
</span><span id="line-259"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-type">CALL</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Left"><span class="hs-identifier hs-type">Left</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-special">)</span><span>  </span><span id="local-6989586621681009017"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681009017"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; [Reg]
</span><a href="GHC.CmmToAsm.SPARC.Regs.html#argRegs"><span class="hs-identifier hs-var">argRegs</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681009017"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="GHC.CmmToAsm.SPARC.Regs.html#callClobberedRegs"><span class="hs-identifier hs-var">callClobberedRegs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-260"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-type">CALL</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Right"><span class="hs-identifier hs-type">Right</span></a></span><span> </span><span id="local-6989586621681009014"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009014"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009014"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-261"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-type">CALL</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Right"><span class="hs-identifier hs-type">Right</span></a></span><span> </span><span id="local-6989586621681009013"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009013"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681009012"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681009012"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var">usage</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009013"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; [Reg] -&gt; [Reg]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; [Reg]
</span><a href="GHC.CmmToAsm.SPARC.Regs.html#argRegs"><span class="hs-identifier hs-var">argRegs</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681009012"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="GHC.CmmToAsm.SPARC.Regs.html#callClobberedRegs"><span class="hs-identifier hs-var">callClobberedRegs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-262"></span><span>    </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>                           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">RegUsage
</span><a href="GHC.CmmToAsm.Instr.html#noUsage"><span class="hs-identifier hs-var">noUsage</span></a></span><span>
</span><span id="line-263"></span><span>
</span><span id="line-264"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-265"></span><span>    </span><span id="local-6989586621681009098"><span class="annot"><span class="annottext">usage :: ([Reg], [Reg]) -&gt; RegUsage
</span><a href="#local-6989586621681009098"><span class="hs-identifier hs-var hs-var">usage</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681009011"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681009011"><span class="hs-identifier hs-var">src</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681009010"><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681009010"><span class="hs-identifier hs-var">dst</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-266"></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Reg] -&gt; [Reg] -&gt; RegUsage
</span><a href="GHC.CmmToAsm.Instr.html#RU"><span class="hs-identifier hs-var">RU</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Reg -&gt; Bool) -&gt; [Reg] -&gt; [Reg]
forall a. (a -&gt; Bool) -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#filter"><span class="hs-identifier hs-var">filter</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; Bool
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#interesting"><span class="hs-identifier hs-var">interesting</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681009102"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681009011"><span class="hs-identifier hs-var">src</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-267"></span><span>          </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Reg -&gt; Bool) -&gt; [Reg] -&gt; [Reg]
forall a. (a -&gt; Bool) -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#filter"><span class="hs-identifier hs-var">filter</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; Bool
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#interesting"><span class="hs-identifier hs-var">interesting</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681009102"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Reg]
</span><a href="#local-6989586621681009010"><span class="hs-identifier hs-var">dst</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-268"></span><span>
</span><span id="line-269"></span><span>    </span><span id="local-6989586621681009097"><span class="annot"><span class="annottext">regAddr :: AddrMode -&gt; [Reg]
</span><a href="#local-6989586621681009097"><span class="hs-identifier hs-var hs-var">regAddr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.AddrMode.html#AddrRegReg"><span class="hs-identifier hs-type">AddrRegReg</span></a></span><span> </span><span id="local-6989586621681009006"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009006"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681009005"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009005"><span class="hs-identifier hs-var">r2</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009006"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009005"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-270"></span><span>    </span><span class="annot"><a href="#local-6989586621681009097"><span class="hs-identifier hs-var">regAddr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.AddrMode.html#AddrRegImm"><span class="hs-identifier hs-type">AddrRegImm</span></a></span><span> </span><span id="local-6989586621681009003"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009003"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span class="annot"><span class="annottext">Imm
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009003"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-271"></span><span>
</span><span id="line-272"></span><span>    </span><span id="local-6989586621681009091"><span class="annot"><span class="annottext">regRI :: RI -&gt; [Reg]
</span><a href="#local-6989586621681009091"><span class="hs-identifier hs-var hs-var">regRI</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RIReg"><span class="hs-identifier hs-type">RIReg</span></a></span><span> </span><span id="local-6989586621681009002"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009002"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009002"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-273"></span><span>    </span><span class="annot"><a href="#local-6989586621681009091"><span class="hs-identifier hs-var">regRI</span></a></span><span>  </span><span class="annot"><span class="annottext">RI
</span><span class="hs-identifier">_</span></span><span>                    </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-274"></span><span>
</span><span id="line-275"></span><span>
</span><span id="line-276"></span><span class="hs-comment">-- | Interesting regs are virtuals, or ones that are allocatable</span><span>
</span><span id="line-277"></span><span class="hs-comment">--      by the register allocator.</span><span>
</span><span id="line-278"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#interesting"><span class="hs-identifier hs-type">interesting</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-279"></span><span id="interesting"><span class="annot"><span class="annottext">interesting :: Platform -&gt; Reg -&gt; Bool
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#interesting"><span class="hs-identifier hs-var hs-var">interesting</span></a></span></span><span> </span><span id="local-6989586621681009001"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681009001"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681009000"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009000"><span class="hs-identifier hs-var">reg</span></a></span></span><span>
</span><span id="line-280"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681009000"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-281"></span><span>        </span><span class="annot"><a href="GHC.Platform.Reg.html#RegVirtual"><span class="hs-identifier hs-type">RegVirtual</span></a></span><span> </span><span class="annot"><span class="annottext">VirtualReg
</span><span class="hs-identifier">_</span></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-282"></span><span>        </span><span class="annot"><a href="GHC.Platform.Reg.html#RegReal"><span class="hs-identifier hs-type">RegReal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#RealRegSingle"><span class="hs-identifier hs-type">RealRegSingle</span></a></span><span> </span><span id="local-6989586621681008998"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008998"><span class="hs-identifier hs-var">r1</span></a></span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; Bool
</span><a href="GHC.Platform.Regs.html#freeReg"><span class="hs-identifier hs-var">freeReg</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681009001"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008998"><span class="hs-identifier hs-var">r1</span></a></span><span>
</span><span id="line-283"></span><span>        </span><span class="annot"><a href="GHC.Platform.Reg.html#RegReal"><span class="hs-identifier hs-type">RegReal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#RealRegPair"><span class="hs-identifier hs-type">RealRegPair</span></a></span><span> </span><span id="local-6989586621681008995"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008995"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int -&gt; Bool
</span><a href="GHC.Platform.Regs.html#freeReg"><span class="hs-identifier hs-var">freeReg</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681009001"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008995"><span class="hs-identifier hs-var">r1</span></a></span><span>
</span><span id="line-284"></span><span>
</span><span id="line-285"></span><span>
</span><span id="line-286"></span><span>
</span><span id="line-287"></span><span class="hs-comment">-- | Apply a given mapping to tall the register references in this instruction.</span><span>
</span><span id="line-288"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_patchRegsOfInstr"><span class="hs-identifier hs-type">sparc_patchRegsOfInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-289"></span><span id="sparc_patchRegsOfInstr"><span class="annot"><span class="annottext">sparc_patchRegsOfInstr :: Instr -&gt; (Reg -&gt; Reg) -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_patchRegsOfInstr"><span class="hs-identifier hs-var hs-var">sparc_patchRegsOfInstr</span></a></span></span><span> </span><span id="local-6989586621681008994"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008994"><span class="hs-identifier hs-var">instr</span></a></span></span><span> </span><span id="local-6989586621681008993"><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008994"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-290"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#LD"><span class="hs-identifier hs-type">LD</span></a></span><span>    </span><span id="local-6989586621681008992"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008992"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681008991"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681008991"><span class="hs-identifier hs-var">addr</span></a></span></span><span> </span><span id="local-6989586621681008990"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008990"><span class="hs-identifier hs-var">reg</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; AddrMode -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#LD"><span class="hs-identifier hs-var">LD</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008992"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681008989"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681008991"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008990"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-291"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ST"><span class="hs-identifier hs-type">ST</span></a></span><span>    </span><span id="local-6989586621681008988"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008988"><span class="hs-identifier hs-var">fmt</span></a></span></span><span> </span><span id="local-6989586621681008987"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008987"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681008986"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681008986"><span class="hs-identifier hs-var">addr</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#ST"><span class="hs-identifier hs-var">ST</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008988"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008987"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681008989"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681008986"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-292"></span><span>
</span><span id="line-293"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ADD"><span class="hs-identifier hs-type">ADD</span></a></span><span>   </span><span id="local-6989586621681008985"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008985"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621681008984"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008984"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621681008983"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008983"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008982"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008982"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008981"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008981"><span class="hs-identifier hs-var">r2</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#ADD"><span class="hs-identifier hs-var">ADD</span></a></span><span>   </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008985"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008984"><span class="hs-identifier hs-var">cc</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008983"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008982"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008981"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-294"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SUB"><span class="hs-identifier hs-type">SUB</span></a></span><span>   </span><span id="local-6989586621681008979"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008979"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621681008978"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008978"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621681008977"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008977"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008976"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008976"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008975"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008975"><span class="hs-identifier hs-var">r2</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#SUB"><span class="hs-identifier hs-var">SUB</span></a></span><span>   </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008979"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008978"><span class="hs-identifier hs-var">cc</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008977"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008976"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008975"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-295"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#UMUL"><span class="hs-identifier hs-type">UMUL</span></a></span><span>    </span><span id="local-6989586621681008974"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008974"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621681008973"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008973"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008972"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008972"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008971"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008971"><span class="hs-identifier hs-var">r2</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#UMUL"><span class="hs-identifier hs-var">UMUL</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008974"><span class="hs-identifier hs-var">cc</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008973"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008972"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008971"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-296"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SMUL"><span class="hs-identifier hs-type">SMUL</span></a></span><span>    </span><span id="local-6989586621681008970"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008970"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621681008969"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008969"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008968"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008968"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008967"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008967"><span class="hs-identifier hs-var">r2</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#SMUL"><span class="hs-identifier hs-var">SMUL</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008970"><span class="hs-identifier hs-var">cc</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008969"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008968"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008967"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-297"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#UDIV"><span class="hs-identifier hs-type">UDIV</span></a></span><span>    </span><span id="local-6989586621681008966"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008966"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621681008965"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008965"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008964"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008964"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008963"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008963"><span class="hs-identifier hs-var">r2</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#UDIV"><span class="hs-identifier hs-var">UDIV</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008966"><span class="hs-identifier hs-var">cc</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008965"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008964"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008963"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-298"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SDIV"><span class="hs-identifier hs-type">SDIV</span></a></span><span>    </span><span id="local-6989586621681008962"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008962"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621681008961"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008961"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008960"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008960"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008959"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008959"><span class="hs-identifier hs-var">r2</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#SDIV"><span class="hs-identifier hs-var">SDIV</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008962"><span class="hs-identifier hs-var">cc</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008961"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008960"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008959"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-299"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RDY"><span class="hs-identifier hs-type">RDY</span></a></span><span>   </span><span id="local-6989586621681008958"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008958"><span class="hs-identifier hs-var">rd</span></a></span></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#RDY"><span class="hs-identifier hs-var">RDY</span></a></span><span>         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008958"><span class="hs-identifier hs-var">rd</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-300"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#WRY"><span class="hs-identifier hs-type">WRY</span></a></span><span>   </span><span id="local-6989586621681008957"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008957"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008956"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008956"><span class="hs-identifier hs-var">r2</span></a></span></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#WRY"><span class="hs-identifier hs-var">WRY</span></a></span><span>         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008957"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008956"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-301"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#AND"><span class="hs-identifier hs-type">AND</span></a></span><span>   </span><span id="local-6989586621681008955"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008955"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621681008954"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008954"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008953"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008953"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008952"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008952"><span class="hs-identifier hs-var">r2</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#AND"><span class="hs-identifier hs-var">AND</span></a></span><span>   </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008955"><span class="hs-identifier hs-var">b</span></a></span><span>     </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008954"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008953"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008952"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-302"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ANDN"><span class="hs-identifier hs-type">ANDN</span></a></span><span>  </span><span id="local-6989586621681008951"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008951"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621681008950"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008950"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008949"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008949"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008948"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008948"><span class="hs-identifier hs-var">r2</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#ANDN"><span class="hs-identifier hs-var">ANDN</span></a></span><span>  </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008951"><span class="hs-identifier hs-var">b</span></a></span><span>     </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008950"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008949"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008948"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-303"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#OR"><span class="hs-identifier hs-type">OR</span></a></span><span>    </span><span id="local-6989586621681008947"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008947"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621681008946"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008946"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008945"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008945"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008944"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008944"><span class="hs-identifier hs-var">r2</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#OR"><span class="hs-identifier hs-var">OR</span></a></span><span>    </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008947"><span class="hs-identifier hs-var">b</span></a></span><span>     </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008946"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008945"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008944"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-304"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ORN"><span class="hs-identifier hs-type">ORN</span></a></span><span>   </span><span id="local-6989586621681008943"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008943"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621681008942"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008942"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008941"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008941"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008940"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008940"><span class="hs-identifier hs-var">r2</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#ORN"><span class="hs-identifier hs-var">ORN</span></a></span><span>   </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008943"><span class="hs-identifier hs-var">b</span></a></span><span>     </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008942"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008941"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008940"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-305"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#XOR"><span class="hs-identifier hs-type">XOR</span></a></span><span>   </span><span id="local-6989586621681008939"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008939"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621681008938"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008938"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008937"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008937"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008936"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008936"><span class="hs-identifier hs-var">r2</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#XOR"><span class="hs-identifier hs-var">XOR</span></a></span><span>   </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008939"><span class="hs-identifier hs-var">b</span></a></span><span>     </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008938"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008937"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008936"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-306"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#XNOR"><span class="hs-identifier hs-type">XNOR</span></a></span><span>  </span><span id="local-6989586621681008935"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008935"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621681008934"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008934"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008933"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008933"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008932"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008932"><span class="hs-identifier hs-var">r2</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#XNOR"><span class="hs-identifier hs-var">XNOR</span></a></span><span>  </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008935"><span class="hs-identifier hs-var">b</span></a></span><span>     </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008934"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008933"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008932"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-307"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SLL"><span class="hs-identifier hs-type">SLL</span></a></span><span>   </span><span id="local-6989586621681008931"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008931"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008930"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008930"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008929"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008929"><span class="hs-identifier hs-var">r2</span></a></span></span><span>              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#SLL"><span class="hs-identifier hs-var">SLL</span></a></span><span>         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008931"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008930"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008929"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-308"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SRL"><span class="hs-identifier hs-type">SRL</span></a></span><span>   </span><span id="local-6989586621681008928"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008928"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008927"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008927"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008926"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008926"><span class="hs-identifier hs-var">r2</span></a></span></span><span>              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#SRL"><span class="hs-identifier hs-var">SRL</span></a></span><span>         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008928"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008927"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008926"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-309"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SRA"><span class="hs-identifier hs-type">SRA</span></a></span><span>   </span><span id="local-6989586621681008925"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008925"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008924"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008924"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span id="local-6989586621681008923"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008923"><span class="hs-identifier hs-var">r2</span></a></span></span><span>              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#SRA"><span class="hs-identifier hs-var">SRA</span></a></span><span>         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008925"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008924"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008923"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-310"></span><span>
</span><span id="line-311"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#SETHI"><span class="hs-identifier hs-type">SETHI</span></a></span><span> </span><span id="local-6989586621681008922"><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681008922"><span class="hs-identifier hs-var">imm</span></a></span></span><span> </span><span id="local-6989586621681008921"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008921"><span class="hs-identifier hs-var">reg</span></a></span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Imm -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#SETHI"><span class="hs-identifier hs-var">SETHI</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681008922"><span class="hs-identifier hs-var">imm</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008921"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-312"></span><span>
</span><span id="line-313"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FABS"><span class="hs-identifier hs-type">FABS</span></a></span><span>  </span><span id="local-6989586621681008920"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008920"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621681008919"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008919"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008918"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008918"><span class="hs-identifier hs-var">r2</span></a></span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FABS"><span class="hs-identifier hs-var">FABS</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008920"><span class="hs-identifier hs-var">s</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008919"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008918"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-314"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FADD"><span class="hs-identifier hs-type">FADD</span></a></span><span>  </span><span id="local-6989586621681008917"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008917"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621681008916"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008916"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008915"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008915"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681008914"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008914"><span class="hs-identifier hs-var">r3</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FADD"><span class="hs-identifier hs-var">FADD</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008917"><span class="hs-identifier hs-var">s</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008916"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008915"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008914"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-315"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FCMP"><span class="hs-identifier hs-type">FCMP</span></a></span><span>  </span><span id="local-6989586621681008913"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008913"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621681008912"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008912"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621681008911"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008911"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008910"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008910"><span class="hs-identifier hs-var">r2</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Format -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FCMP"><span class="hs-identifier hs-var">FCMP</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008913"><span class="hs-identifier hs-var">e</span></a></span><span>  </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008912"><span class="hs-identifier hs-var">s</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008911"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008910"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-316"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FDIV"><span class="hs-identifier hs-type">FDIV</span></a></span><span>  </span><span id="local-6989586621681008909"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008909"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621681008908"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008908"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008907"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008907"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681008906"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008906"><span class="hs-identifier hs-var">r3</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FDIV"><span class="hs-identifier hs-var">FDIV</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008909"><span class="hs-identifier hs-var">s</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008908"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008907"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008906"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-317"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FMOV"><span class="hs-identifier hs-type">FMOV</span></a></span><span>  </span><span id="local-6989586621681008905"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008905"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621681008904"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008904"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008903"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008903"><span class="hs-identifier hs-var">r2</span></a></span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FMOV"><span class="hs-identifier hs-var">FMOV</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008905"><span class="hs-identifier hs-var">s</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008904"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008903"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-318"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FMUL"><span class="hs-identifier hs-type">FMUL</span></a></span><span>  </span><span id="local-6989586621681008902"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008902"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621681008901"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008901"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008900"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008900"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681008899"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008899"><span class="hs-identifier hs-var">r3</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FMUL"><span class="hs-identifier hs-var">FMUL</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008902"><span class="hs-identifier hs-var">s</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008901"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008900"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008899"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-319"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FNEG"><span class="hs-identifier hs-type">FNEG</span></a></span><span>  </span><span id="local-6989586621681008898"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008898"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621681008897"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008897"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008896"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008896"><span class="hs-identifier hs-var">r2</span></a></span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FNEG"><span class="hs-identifier hs-var">FNEG</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008898"><span class="hs-identifier hs-var">s</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008897"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008896"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-320"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FSQRT"><span class="hs-identifier hs-type">FSQRT</span></a></span><span> </span><span id="local-6989586621681008895"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008895"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621681008894"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008894"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008893"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008893"><span class="hs-identifier hs-var">r2</span></a></span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FSQRT"><span class="hs-identifier hs-var">FSQRT</span></a></span><span>   </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008895"><span class="hs-identifier hs-var">s</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008894"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008893"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-321"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FSUB"><span class="hs-identifier hs-type">FSUB</span></a></span><span>  </span><span id="local-6989586621681008892"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008892"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621681008891"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008891"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008890"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008890"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681008889"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008889"><span class="hs-identifier hs-var">r3</span></a></span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FSUB"><span class="hs-identifier hs-var">FSUB</span></a></span><span>    </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008892"><span class="hs-identifier hs-var">s</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008891"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008890"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008889"><span class="hs-identifier hs-var">r3</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-322"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FxTOy"><span class="hs-identifier hs-type">FxTOy</span></a></span><span> </span><span id="local-6989586621681008888"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008888"><span class="hs-identifier hs-var">s1</span></a></span></span><span> </span><span id="local-6989586621681008887"><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008887"><span class="hs-identifier hs-var">s2</span></a></span></span><span> </span><span id="local-6989586621681008886"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008886"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008885"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008885"><span class="hs-identifier hs-var">r2</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Format -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FxTOy"><span class="hs-identifier hs-var">FxTOy</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008888"><span class="hs-identifier hs-var">s1</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008887"><span class="hs-identifier hs-var">s2</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008886"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008885"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-323"></span><span>
</span><span id="line-324"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP"><span class="hs-identifier hs-type">JMP</span></a></span><span>     </span><span id="local-6989586621681008884"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681008884"><span class="hs-identifier hs-var">addr</span></a></span></span><span>                </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP"><span class="hs-identifier hs-var">JMP</span></a></span><span>     </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681008989"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681008884"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-325"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP_TBL"><span class="hs-identifier hs-type">JMP_TBL</span></a></span><span> </span><span id="local-6989586621681008883"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681008883"><span class="hs-identifier hs-var">addr</span></a></span></span><span> </span><span id="local-6989586621681008882"><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681008882"><span class="hs-identifier hs-var">ids</span></a></span></span><span> </span><span id="local-6989586621681008881"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681008881"><span class="hs-identifier hs-var">l</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">AddrMode -&gt; [Maybe BlockId] -&gt; CLabel -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP_TBL"><span class="hs-identifier hs-var">JMP_TBL</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681008989"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681008883"><span class="hs-identifier hs-var">addr</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681008882"><span class="hs-identifier hs-var">ids</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681008881"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-326"></span><span>
</span><span id="line-327"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-type">CALL</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Left"><span class="hs-identifier hs-type">Left</span></a></span><span> </span><span id="local-6989586621681008880"><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681008880"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681008879"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008879"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621681008878"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008878"><span class="hs-identifier hs-var">t</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Either Imm Reg -&gt; Int -&gt; Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-var">CALL</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Imm -&gt; Either Imm Reg
forall a b. a -&gt; Either a b
</span><a href="../../base/src/Data.Either.html#Left"><span class="hs-identifier hs-var">Left</span></a></span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681008880"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008879"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008878"><span class="hs-identifier hs-var">t</span></a></span><span>
</span><span id="line-328"></span><span>    </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-type">CALL</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Right"><span class="hs-identifier hs-type">Right</span></a></span><span> </span><span id="local-6989586621681008877"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008877"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681008876"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008876"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621681008875"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008875"><span class="hs-identifier hs-var">t</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Either Imm Reg -&gt; Int -&gt; Bool -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-var">CALL</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Either Imm Reg
forall a b. b -&gt; Either a b
</span><a href="../../base/src/Data.Either.html#Right"><span class="hs-identifier hs-var">Right</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008877"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008876"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008875"><span class="hs-identifier hs-var">t</span></a></span><span>
</span><span id="line-329"></span><span>    </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>                           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008994"><span class="hs-identifier hs-var">instr</span></a></span><span>
</span><span id="line-330"></span><span>
</span><span id="line-331"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-332"></span><span>    </span><span id="local-6989586621681008989"><span class="annot"><span class="annottext">fixAddr :: AddrMode -&gt; AddrMode
</span><a href="#local-6989586621681008989"><span class="hs-identifier hs-var hs-var">fixAddr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.AddrMode.html#AddrRegReg"><span class="hs-identifier hs-type">AddrRegReg</span></a></span><span> </span><span id="local-6989586621681008874"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008874"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008873"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008873"><span class="hs-identifier hs-var">r2</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; AddrMode
</span><a href="GHC.CmmToAsm.SPARC.AddrMode.html#AddrRegReg"><span class="hs-identifier hs-var">AddrRegReg</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008874"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008873"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-333"></span><span>    </span><span class="annot"><a href="#local-6989586621681008989"><span class="hs-identifier hs-var">fixAddr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.AddrMode.html#AddrRegImm"><span class="hs-identifier hs-type">AddrRegImm</span></a></span><span> </span><span id="local-6989586621681008872"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008872"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681008871"><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681008871"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Imm -&gt; AddrMode
</span><a href="GHC.CmmToAsm.SPARC.AddrMode.html#AddrRegImm"><span class="hs-identifier hs-var">AddrRegImm</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008872"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Imm
</span><a href="#local-6989586621681008871"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-334"></span><span>
</span><span id="line-335"></span><span>    </span><span id="local-6989586621681008980"><span class="annot"><span class="annottext">fixRI :: RI -&gt; RI
</span><a href="#local-6989586621681008980"><span class="hs-identifier hs-var hs-var">fixRI</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RIReg"><span class="hs-identifier hs-type">RIReg</span></a></span><span> </span><span id="local-6989586621681008870"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008870"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Reg -&gt; RI
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#RIReg"><span class="hs-identifier hs-var">RIReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; Reg
</span><a href="#local-6989586621681008993"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008870"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-336"></span><span>    </span><span class="annot"><a href="#local-6989586621681008980"><span class="hs-identifier hs-var">fixRI</span></a></span><span> </span><span id="local-6989586621681008869"><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008869"><span class="hs-identifier hs-var">other</span></a></span></span><span>                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">RI
</span><a href="#local-6989586621681008869"><span class="hs-identifier hs-var">other</span></a></span><span>
</span><span id="line-337"></span><span>
</span><span id="line-338"></span><span>
</span><span id="line-339"></span><span class="hs-comment">--------------------------------------------------------------------------------</span><span>
</span><span id="line-340"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_isJumpishInstr"><span class="hs-identifier hs-type">sparc_isJumpishInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-341"></span><span id="sparc_isJumpishInstr"><span class="annot"><span class="annottext">sparc_isJumpishInstr :: Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_isJumpishInstr"><span class="hs-identifier hs-var hs-var">sparc_isJumpishInstr</span></a></span></span><span> </span><span id="local-6989586621681008868"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008868"><span class="hs-identifier hs-var">instr</span></a></span></span><span>
</span><span id="line-342"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008868"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-343"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#BI"><span class="hs-identifier hs-type">BI</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-344"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#BF"><span class="hs-identifier hs-type">BF</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-345"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP"><span class="hs-identifier hs-type">JMP</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-346"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP_TBL"><span class="hs-identifier hs-type">JMP_TBL</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-347"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#CALL"><span class="hs-identifier hs-type">CALL</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-348"></span><span>        </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-349"></span><span>
</span><span id="line-350"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_jumpDestsOfInstr"><span class="hs-identifier hs-type">sparc_jumpDestsOfInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-351"></span><span id="sparc_jumpDestsOfInstr"><span class="annot"><span class="annottext">sparc_jumpDestsOfInstr :: Instr -&gt; [BlockId]
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_jumpDestsOfInstr"><span class="hs-identifier hs-var hs-var">sparc_jumpDestsOfInstr</span></a></span></span><span> </span><span id="local-6989586621681008867"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008867"><span class="hs-identifier hs-var">insn</span></a></span></span><span>
</span><span id="line-352"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008867"><span class="hs-identifier hs-var">insn</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-353"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#BI"><span class="hs-identifier hs-type">BI</span></a></span><span>   </span><span class="annot"><span class="annottext">Cond
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681008866"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008866"><span class="hs-identifier hs-var">id</span></a></span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008866"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-354"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#BF"><span class="hs-identifier hs-type">BF</span></a></span><span>   </span><span class="annot"><span class="annottext">Cond
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681008865"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008865"><span class="hs-identifier hs-var">id</span></a></span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008865"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-355"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP_TBL"><span class="hs-identifier hs-type">JMP_TBL</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681008864"><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681008864"><span class="hs-identifier hs-var">ids</span></a></span></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008863"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681008863"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008863"><span class="hs-identifier hs-var">id</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681008864"><span class="hs-identifier hs-var">ids</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-356"></span><span>        </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-357"></span><span>
</span><span id="line-358"></span><span>
</span><span id="line-359"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_patchJumpInstr"><span class="hs-identifier hs-type">sparc_patchJumpInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-360"></span><span id="sparc_patchJumpInstr"><span class="annot"><span class="annottext">sparc_patchJumpInstr :: Instr -&gt; (BlockId -&gt; BlockId) -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_patchJumpInstr"><span class="hs-identifier hs-var hs-var">sparc_patchJumpInstr</span></a></span></span><span> </span><span id="local-6989586621681008862"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008862"><span class="hs-identifier hs-var">insn</span></a></span></span><span> </span><span id="local-6989586621681008861"><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681008861"><span class="hs-identifier hs-var">patchF</span></a></span></span><span>
</span><span id="line-361"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008862"><span class="hs-identifier hs-var">insn</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-362"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#BI"><span class="hs-identifier hs-type">BI</span></a></span><span> </span><span id="local-6989586621681008860"><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681008860"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621681008859"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008859"><span class="hs-identifier hs-var">annul</span></a></span></span><span> </span><span id="local-6989586621681008858"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008858"><span class="hs-identifier hs-var">id</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; Bool -&gt; BlockId -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#BI"><span class="hs-identifier hs-var">BI</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681008860"><span class="hs-identifier hs-var">cc</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008859"><span class="hs-identifier hs-var">annul</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681008861"><span class="hs-identifier hs-var">patchF</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008858"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-363"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#BF"><span class="hs-identifier hs-type">BF</span></a></span><span> </span><span id="local-6989586621681008857"><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681008857"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621681008856"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008856"><span class="hs-identifier hs-var">annul</span></a></span></span><span> </span><span id="local-6989586621681008855"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008855"><span class="hs-identifier hs-var">id</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Cond -&gt; Bool -&gt; BlockId -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#BF"><span class="hs-identifier hs-var">BF</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="#local-6989586621681008857"><span class="hs-identifier hs-var">cc</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681008856"><span class="hs-identifier hs-var">annul</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681008861"><span class="hs-identifier hs-var">patchF</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008855"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-364"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP_TBL"><span class="hs-identifier hs-type">JMP_TBL</span></a></span><span> </span><span id="local-6989586621681008854"><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681008854"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621681008853"><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681008853"><span class="hs-identifier hs-var">ids</span></a></span></span><span> </span><span id="local-6989586621681008852"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681008852"><span class="hs-identifier hs-var">l</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">AddrMode -&gt; [Maybe BlockId] -&gt; CLabel -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#JMP_TBL"><span class="hs-identifier hs-var">JMP_TBL</span></a></span><span> </span><span class="annot"><span class="annottext">AddrMode
</span><a href="#local-6989586621681008854"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Maybe BlockId -&gt; Maybe BlockId)
-&gt; [Maybe BlockId] -&gt; [Maybe BlockId]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(BlockId -&gt; BlockId) -&gt; Maybe BlockId -&gt; Maybe BlockId
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; BlockId
</span><a href="#local-6989586621681008861"><span class="hs-identifier hs-var">patchF</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Maybe BlockId]
</span><a href="#local-6989586621681008853"><span class="hs-identifier hs-var">ids</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681008852"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-365"></span><span>        </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008862"><span class="hs-identifier hs-var">insn</span></a></span><span>
</span><span id="line-366"></span><span>
</span><span id="line-367"></span><span>
</span><span id="line-368"></span><span class="hs-comment">--------------------------------------------------------------------------------</span><span>
</span><span id="line-369"></span><span class="hs-comment">-- | Make a spill instruction.</span><span>
</span><span id="line-370"></span><span class="hs-comment">--      On SPARC we spill below frame pointer leaving 2 words/spill</span><span>
</span><span id="line-371"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkSpillInstr"><span class="hs-identifier hs-type">sparc_mkSpillInstr</span></a></span><span>
</span><span id="line-372"></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Config.html#NCGConfig"><span class="hs-identifier hs-type">NCGConfig</span></a></span><span>
</span><span id="line-373"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>      </span><span class="hs-comment">-- ^ register to spill</span><span>
</span><span id="line-374"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>      </span><span class="hs-comment">-- ^ current stack delta</span><span>
</span><span id="line-375"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>      </span><span class="hs-comment">-- ^ spill slot to use</span><span>
</span><span id="line-376"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-377"></span><span>
</span><span id="line-378"></span><span id="sparc_mkSpillInstr"><span class="annot"><span class="annottext">sparc_mkSpillInstr :: NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkSpillInstr"><span class="hs-identifier hs-var hs-var">sparc_mkSpillInstr</span></a></span></span><span> </span><span id="local-6989586621681008851"><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681008851"><span class="hs-identifier hs-var">config</span></a></span></span><span> </span><span id="local-6989586621681008850"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008850"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681008849"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008849"><span class="hs-identifier hs-var">slot</span></a></span></span><span>
</span><span id="line-379"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">let</span><span>  </span><span id="local-6989586621681008848"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681008848"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Platform
</span><a href="GHC.CmmToAsm.Config.html#ncgPlatform"><span class="hs-identifier hs-var hs-var">ncgPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681008851"><span class="hs-identifier hs-var">config</span></a></span><span>
</span><span id="line-380"></span><span>        </span><span id="local-6989586621681008846"><span class="annot"><span class="annottext">off :: Int
</span><a href="#local-6989586621681008846"><span class="hs-identifier hs-var hs-var">off</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Int -&gt; Int
</span><a href="GHC.CmmToAsm.SPARC.Stack.html#spillSlotToOffset"><span class="hs-identifier hs-var">spillSlotToOffset</span></a></span><span> </span><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681008851"><span class="hs-identifier hs-var">config</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008849"><span class="hs-identifier hs-var">slot</span></a></span><span>
</span><span id="line-381"></span><span>        </span><span id="local-6989586621681008839"><span class="annot"><span class="annottext">off_w :: Int
</span><a href="#local-6989586621681008839"><span class="hs-identifier hs-var hs-var">off_w</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008846"><span class="hs-identifier hs-var">off</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#div"><span class="hs-operator hs-var">`div`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span class="hs-special">)</span><span>
</span><span id="line-382"></span><span>        </span><span id="local-6989586621681008836"><span class="annot"><span class="annottext">fmt :: Format
</span><a href="#local-6989586621681008836"><span class="hs-identifier hs-var hs-var">fmt</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; RegClass
</span><a href="GHC.CmmToAsm.Reg.Target.html#targetClassOfReg"><span class="hs-identifier hs-var">targetClassOfReg</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681008848"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008850"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-383"></span><span>                        </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcInteger"><span class="hs-identifier hs-var">RcInteger</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#II32"><span class="hs-identifier hs-var">II32</span></a></span><span>
</span><span id="line-384"></span><span>                        </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcFloat"><span class="hs-identifier hs-var">RcFloat</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#FF32"><span class="hs-identifier hs-var">FF32</span></a></span><span>
</span><span id="line-385"></span><span>                        </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcDouble"><span class="hs-identifier hs-var">RcDouble</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#FF64"><span class="hs-identifier hs-var">FF64</span></a></span><span>
</span><span id="line-386"></span><span>
</span><span id="line-387"></span><span>    </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; AddrMode -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#ST"><span class="hs-identifier hs-var">ST</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008836"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008850"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; AddrMode
</span><a href="GHC.CmmToAsm.SPARC.Stack.html#fpRel"><span class="hs-identifier hs-var">fpRel</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Int
forall a. Num a =&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#negate"><span class="hs-identifier hs-var">negate</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008839"><span class="hs-identifier hs-var">off_w</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-388"></span><span>
</span><span id="line-389"></span><span>
</span><span id="line-390"></span><span class="hs-comment">-- | Make a spill reload instruction.</span><span>
</span><span id="line-391"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkLoadInstr"><span class="hs-identifier hs-type">sparc_mkLoadInstr</span></a></span><span>
</span><span id="line-392"></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.Config.html#NCGConfig"><span class="hs-identifier hs-type">NCGConfig</span></a></span><span>
</span><span id="line-393"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>      </span><span class="hs-comment">-- ^ register to load into</span><span>
</span><span id="line-394"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>      </span><span class="hs-comment">-- ^ current stack delta</span><span>
</span><span id="line-395"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>      </span><span class="hs-comment">-- ^ spill slot to use</span><span>
</span><span id="line-396"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-397"></span><span>
</span><span id="line-398"></span><span id="sparc_mkLoadInstr"><span class="annot"><span class="annottext">sparc_mkLoadInstr :: NCGConfig -&gt; Reg -&gt; Int -&gt; Int -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkLoadInstr"><span class="hs-identifier hs-var hs-var">sparc_mkLoadInstr</span></a></span></span><span> </span><span id="local-6989586621681008827"><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681008827"><span class="hs-identifier hs-var">config</span></a></span></span><span> </span><span id="local-6989586621681008826"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008826"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681008825"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008825"><span class="hs-identifier hs-var">slot</span></a></span></span><span>
</span><span id="line-399"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681008824"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681008824"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Platform
</span><a href="GHC.CmmToAsm.Config.html#ncgPlatform"><span class="hs-identifier hs-var hs-var">ncgPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681008827"><span class="hs-identifier hs-var">config</span></a></span><span>
</span><span id="line-400"></span><span>        </span><span id="local-6989586621681008823"><span class="annot"><span class="annottext">off :: Int
</span><a href="#local-6989586621681008823"><span class="hs-identifier hs-var hs-var">off</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NCGConfig -&gt; Int -&gt; Int
</span><a href="GHC.CmmToAsm.SPARC.Stack.html#spillSlotToOffset"><span class="hs-identifier hs-var">spillSlotToOffset</span></a></span><span> </span><span class="annot"><span class="annottext">NCGConfig
</span><a href="#local-6989586621681008827"><span class="hs-identifier hs-var">config</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008825"><span class="hs-identifier hs-var">slot</span></a></span><span>
</span><span id="line-401"></span><span>        </span><span id="local-6989586621681008818"><span class="annot"><span class="annottext">off_w :: Int
</span><a href="#local-6989586621681008818"><span class="hs-identifier hs-var hs-var">off_w</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008823"><span class="hs-identifier hs-var">off</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#div"><span class="hs-operator hs-var">`div`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span class="hs-special">)</span><span>
</span><span id="line-402"></span><span>        </span><span id="local-6989586621681008817"><span class="annot"><span class="annottext">fmt :: Format
</span><a href="#local-6989586621681008817"><span class="hs-identifier hs-var hs-var">fmt</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; RegClass
</span><a href="GHC.CmmToAsm.Reg.Target.html#targetClassOfReg"><span class="hs-identifier hs-var">targetClassOfReg</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681008824"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008826"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-403"></span><span>                        </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcInteger"><span class="hs-identifier hs-var">RcInteger</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#II32"><span class="hs-identifier hs-var">II32</span></a></span><span>
</span><span id="line-404"></span><span>                        </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcFloat"><span class="hs-identifier hs-var">RcFloat</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#FF32"><span class="hs-identifier hs-var">FF32</span></a></span><span>
</span><span id="line-405"></span><span>                        </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcDouble"><span class="hs-identifier hs-var">RcDouble</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#FF64"><span class="hs-identifier hs-var">FF64</span></a></span><span>
</span><span id="line-406"></span><span>
</span><span id="line-407"></span><span>        </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">Format -&gt; AddrMode -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#LD"><span class="hs-identifier hs-var">LD</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="#local-6989586621681008817"><span class="hs-identifier hs-var">fmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; AddrMode
</span><a href="GHC.CmmToAsm.SPARC.Stack.html#fpRel"><span class="hs-identifier hs-var">fpRel</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">-</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008818"><span class="hs-identifier hs-var">off_w</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008826"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-408"></span><span>
</span><span id="line-409"></span><span>
</span><span id="line-410"></span><span class="hs-comment">--------------------------------------------------------------------------------</span><span>
</span><span id="line-411"></span><span class="hs-comment">-- | See if this instruction is telling us the current C stack delta</span><span>
</span><span id="line-412"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_takeDeltaInstr"><span class="hs-identifier hs-type">sparc_takeDeltaInstr</span></a></span><span>
</span><span id="line-413"></span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-414"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-415"></span><span>
</span><span id="line-416"></span><span id="sparc_takeDeltaInstr"><span class="annot"><span class="annottext">sparc_takeDeltaInstr :: Instr -&gt; Maybe Int
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_takeDeltaInstr"><span class="hs-identifier hs-var hs-var">sparc_takeDeltaInstr</span></a></span></span><span> </span><span id="local-6989586621681008816"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008816"><span class="hs-identifier hs-var">instr</span></a></span></span><span>
</span><span id="line-417"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008816"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-418"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#DELTA"><span class="hs-identifier hs-type">DELTA</span></a></span><span> </span><span id="local-6989586621681008815"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008815"><span class="hs-identifier hs-var">i</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Maybe Int
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681008815"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-419"></span><span>        </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe Int
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-420"></span><span>
</span><span id="line-421"></span><span>
</span><span id="line-422"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_isMetaInstr"><span class="hs-identifier hs-type">sparc_isMetaInstr</span></a></span><span>
</span><span id="line-423"></span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-424"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-425"></span><span>
</span><span id="line-426"></span><span id="sparc_isMetaInstr"><span class="annot"><span class="annottext">sparc_isMetaInstr :: Instr -&gt; Bool
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_isMetaInstr"><span class="hs-identifier hs-var hs-var">sparc_isMetaInstr</span></a></span></span><span> </span><span id="local-6989586621681008814"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008814"><span class="hs-identifier hs-var">instr</span></a></span></span><span>
</span><span id="line-427"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008814"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-428"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#COMMENT"><span class="hs-identifier hs-type">COMMENT</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-429"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#LDATA"><span class="hs-identifier hs-type">LDATA</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-430"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#NEWBLOCK"><span class="hs-identifier hs-type">NEWBLOCK</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-431"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#DELTA"><span class="hs-identifier hs-type">DELTA</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-432"></span><span>        </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-433"></span><span>
</span><span id="line-434"></span><span>
</span><span id="line-435"></span><span class="hs-comment">-- | Make a reg-reg move instruction.</span><span>
</span><span id="line-436"></span><span class="hs-comment">--      On SPARC v8 there are no instructions to move directly between</span><span>
</span><span id="line-437"></span><span class="hs-comment">--      floating point and integer regs. If we need to do that then we</span><span>
</span><span id="line-438"></span><span class="hs-comment">--      have to go via memory.</span><span>
</span><span id="line-439"></span><span class="hs-comment">--</span><span>
</span><span id="line-440"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkRegRegMoveInstr"><span class="hs-identifier hs-type">sparc_mkRegRegMoveInstr</span></a></span><span>
</span><span id="line-441"></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span>
</span><span id="line-442"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-443"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span>
</span><span id="line-444"></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span>
</span><span id="line-445"></span><span>
</span><span id="line-446"></span><span id="sparc_mkRegRegMoveInstr"><span class="annot"><span class="annottext">sparc_mkRegRegMoveInstr :: Platform -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkRegRegMoveInstr"><span class="hs-identifier hs-var hs-var">sparc_mkRegRegMoveInstr</span></a></span></span><span> </span><span id="local-6989586621681008813"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681008813"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681008812"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008812"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span id="local-6989586621681008811"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008811"><span class="hs-identifier hs-var">dst</span></a></span></span><span>
</span><span id="line-447"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621681008810"><span class="annot"><span class="annottext">RegClass
</span><a href="#local-6989586621681008810"><span class="hs-identifier hs-var">srcClass</span></a></span></span><span>      </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; RegClass
</span><a href="GHC.CmmToAsm.Reg.Target.html#targetClassOfReg"><span class="hs-identifier hs-var">targetClassOfReg</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681008813"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008812"><span class="hs-identifier hs-var">src</span></a></span><span>
</span><span id="line-448"></span><span>        </span><span class="hs-special">,</span><span> </span><span id="local-6989586621681008809"><span class="annot"><span class="annottext">RegClass
</span><a href="#local-6989586621681008809"><span class="hs-identifier hs-var">dstClass</span></a></span></span><span>      </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Reg -&gt; RegClass
</span><a href="GHC.CmmToAsm.Reg.Target.html#targetClassOfReg"><span class="hs-identifier hs-var">targetClassOfReg</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681008813"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008811"><span class="hs-identifier hs-var">dst</span></a></span><span>
</span><span id="line-449"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">RegClass
</span><a href="#local-6989586621681008810"><span class="hs-identifier hs-var">srcClass</span></a></span><span> </span><span class="annot"><span class="annottext">RegClass -&gt; RegClass -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">RegClass
</span><a href="#local-6989586621681008809"><span class="hs-identifier hs-var">dstClass</span></a></span><span>
</span><span id="line-450"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">RegClass
</span><a href="#local-6989586621681008810"><span class="hs-identifier hs-var">srcClass</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-451"></span><span>                </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcInteger"><span class="hs-identifier hs-var">RcInteger</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Reg -&gt; RI -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#ADD"><span class="hs-identifier hs-var">ADD</span></a></span><span>  </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008812"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg -&gt; RI
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#RIReg"><span class="hs-identifier hs-var">RIReg</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.SPARC.Regs.html#g0"><span class="hs-identifier hs-var">g0</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008811"><span class="hs-identifier hs-var">dst</span></a></span><span>
</span><span id="line-452"></span><span>                </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcDouble"><span class="hs-identifier hs-var">RcDouble</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FMOV"><span class="hs-identifier hs-var">FMOV</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#FF64"><span class="hs-identifier hs-var">FF64</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008812"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008811"><span class="hs-identifier hs-var">dst</span></a></span><span>
</span><span id="line-453"></span><span>                </span><span class="annot"><span class="annottext">RegClass
</span><a href="GHC.Platform.Reg.Class.html#RcFloat"><span class="hs-identifier hs-var">RcFloat</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Format -&gt; Reg -&gt; Reg -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#FMOV"><span class="hs-identifier hs-var">FMOV</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#FF32"><span class="hs-identifier hs-var">FF32</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008812"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008811"><span class="hs-identifier hs-var">dst</span></a></span><span>
</span><span id="line-454"></span><span>
</span><span id="line-455"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-456"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Instr
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;SPARC.Instr.mkRegRegMoveInstr: classes of src and dest not the same&quot;</span></span><span>
</span><span id="line-457"></span><span>
</span><span id="line-458"></span><span>
</span><span id="line-459"></span><span class="hs-comment">-- | Check whether an instruction represents a reg-reg move.</span><span>
</span><span id="line-460"></span><span class="hs-comment">--      The register allocator attempts to eliminate reg-&gt;reg moves whenever it can,</span><span>
</span><span id="line-461"></span><span class="hs-comment">--      by assigning the src and dest temporaries to the same real register.</span><span>
</span><span id="line-462"></span><span class="hs-comment">--</span><span>
</span><span id="line-463"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_takeRegRegMoveInstr"><span class="hs-identifier hs-type">sparc_takeRegRegMoveInstr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.Platform.Reg.html#Reg"><span class="hs-identifier hs-type">Reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-464"></span><span id="sparc_takeRegRegMoveInstr"><span class="annot"><span class="annottext">sparc_takeRegRegMoveInstr :: Instr -&gt; Maybe (Reg, Reg)
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_takeRegRegMoveInstr"><span class="hs-identifier hs-var hs-var">sparc_takeRegRegMoveInstr</span></a></span></span><span> </span><span id="local-6989586621681008807"><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008807"><span class="hs-identifier hs-var">instr</span></a></span></span><span>
</span><span id="line-465"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="#local-6989586621681008807"><span class="hs-identifier hs-var">instr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-466"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#ADD"><span class="hs-identifier hs-type">ADD</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span id="local-6989586621681008806"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008806"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#RIReg"><span class="hs-identifier hs-type">RIReg</span></a></span><span> </span><span id="local-6989586621681008805"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008805"><span class="hs-identifier hs-var">src2</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681008804"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008804"><span class="hs-identifier hs-var">dst</span></a></span></span><span>
</span><span id="line-467"></span><span>         </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="GHC.CmmToAsm.SPARC.Regs.html#g0"><span class="hs-identifier hs-var">g0</span></a></span><span> </span><span class="annot"><span class="annottext">Reg -&gt; Reg -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008805"><span class="hs-identifier hs-var">src2</span></a></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">(Reg, Reg) -&gt; Maybe (Reg, Reg)
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008806"><span class="hs-identifier hs-var">src</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008804"><span class="hs-identifier hs-var">dst</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-468"></span><span>
</span><span id="line-469"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FMOV"><span class="hs-identifier hs-type">FMOV</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#FF64"><span class="hs-identifier hs-var">FF64</span></a></span><span> </span><span id="local-6989586621681008803"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008803"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span id="local-6989586621681008802"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008802"><span class="hs-identifier hs-var">dst</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">(Reg, Reg) -&gt; Maybe (Reg, Reg)
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008803"><span class="hs-identifier hs-var">src</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008802"><span class="hs-identifier hs-var">dst</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-470"></span><span>        </span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#FMOV"><span class="hs-identifier hs-type">FMOV</span></a></span><span> </span><span class="annot"><span class="annottext">Format
</span><a href="GHC.CmmToAsm.Format.html#FF32"><span class="hs-identifier hs-var">FF32</span></a></span><span>  </span><span id="local-6989586621681008801"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008801"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span id="local-6989586621681008800"><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008800"><span class="hs-identifier hs-var">dst</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">(Reg, Reg) -&gt; Maybe (Reg, Reg)
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008801"><span class="hs-identifier hs-var">src</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Reg
</span><a href="#local-6989586621681008800"><span class="hs-identifier hs-var">dst</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-471"></span><span>        </span><span class="annot"><span class="annottext">Instr
</span><span class="hs-identifier">_</span></span><span>                       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe (Reg, Reg)
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-472"></span><span>
</span><span id="line-473"></span><span>
</span><span id="line-474"></span><span class="hs-comment">-- | Make an unconditional branch instruction.</span><span>
</span><span id="line-475"></span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkJumpInstr"><span class="hs-identifier hs-type">sparc_mkJumpInstr</span></a></span><span>
</span><span id="line-476"></span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span>
</span><span id="line-477"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToAsm.SPARC.Instr.html#Instr"><span class="hs-identifier hs-type">Instr</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-478"></span><span>
</span><span id="line-479"></span><span id="sparc_mkJumpInstr"><span class="annot"><span class="annottext">sparc_mkJumpInstr :: BlockId -&gt; [Instr]
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#sparc_mkJumpInstr"><span class="hs-identifier hs-var hs-var">sparc_mkJumpInstr</span></a></span></span><span> </span><span id="local-6989586621681008799"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008799"><span class="hs-identifier hs-var">id</span></a></span></span><span>
</span><span id="line-480"></span><span> </span><span class="hs-glyph">=</span><span>       </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Cond -&gt; Bool -&gt; BlockId -&gt; Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#BI"><span class="hs-identifier hs-var">BI</span></a></span><span> </span><span class="annot"><span class="annottext">Cond
</span><a href="GHC.CmmToAsm.SPARC.Cond.html#ALWAYS"><span class="hs-identifier hs-var">ALWAYS</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681008799"><span class="hs-identifier hs-var">id</span></a></span><span>
</span><span id="line-481"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Instr
</span><a href="GHC.CmmToAsm.SPARC.Instr.html#NOP"><span class="hs-identifier hs-var">NOP</span></a></span><span class="hs-special">]</span><span>                  </span><span class="hs-comment">-- fill the branch delay slot.</span><span>
</span><span id="line-482"></span></pre></body></html>